package com.hanthink.system.mapper.task;

import java.util.List;

import com.hanthink.common.core.domain.entity.SysUser;
import com.hanthink.system.domain.equipment.EquipConfirmLog;
import com.hanthink.system.domain.repair.Equip;
import com.hanthink.system.domain.repair.EquipOperLog;
import com.hanthink.system.domain.repair.EquipSelfCheckFileVo;
import com.hanthink.system.domain.repair.EquipSelfCheckVo;
import com.hanthink.system.domain.repair.EquipStandardPic;
import com.hanthink.system.domain.repair.EquipTaskItem;
import com.hanthink.system.domain.repair.Task;
import com.hanthink.system.domain.repair.TaskFile;
import com.hanthink.system.domain.repair.TaskItem;
import com.hanthink.system.domain.repair.TaskSelect;

/**
 * <p>
 * Title: TaskExecuteMapper
 * </p>
 * <p>
 * Description: 任务执行-数据层
 * </p>
 * 
 * @author vondser
 * @date 2020年12月10日
 */
public interface TaskExecuteMapper {

	Task queryTaskInfo(Equip equip);

	TaskItem queryTaskItemUndoInfo(Task task);

	List<EquipTaskItem> queryTaskItemUnCreatedInfo(Equip equip);

	int saveTask(Task task);

	void saveTaskItem(TaskItem taskItem);

	void saveTaskItemBatch(List<TaskItem> itemList);

	int saveOrUpdateTaskItemInfo(List<TaskItem> itemList);

	/**
	 * 单个更新任务项
	 * 
	 * @param item
	 * @return
	 */
	int saveSingleTaskItemInfo(TaskItem item);

	/**
	 * 保存任务执行文件记录
	 * 
	 * @param fileList
	 * @return
	 */
	int saveTaskFile(List<TaskFile> fileList);

	int updateTaskFile(List<TaskFile> fileList);

	List<TaskItem> queryTaskItemInfo(Equip equip);

	List<EquipStandardPic> queryStandardPicList(Equip equip);

	int saveEquipSelfCheckInfo(EquipSelfCheckVo scv);

	int saveEquipSelfCheckFileInfo(List<EquipSelfCheckFileVo> resourceList);

	List<Equip> queryEquipList(SysUser user);

	int updateEquipInfo(Equip equip);

	int updateEquipAppointment(Equip equip);

	int saveEquipOperLog(EquipOperLog equipOperLog);
	
	int saveEquipConfirmLog(EquipConfirmLog equipConfirmLog);

	/**
	 * 查询当前设备点检任务项列表
	 * 
	 * @param task 任务实体
	 * @return 任务列表
	 */
	List<Task> queryEquipTaskList(Task task);

	/**
	 * 更新点检任务单状态
	 * 
	 * @param task 任务实体
	 */
	void updateTaskStatus(Task task);




	void updateTaskStatusCloseTask(Task task);

	/**
	 * 更新点检任务单状态
	 * 
	 * @param task 任务实体
	 */
	void updateTaskStatusAndProgress(Task task);

	/**
	 * 根据任务单编号删除任务执行文件记录
	 * 
	 * @param task 任务实体
	 */
	void deleteFileRecordByCode(TaskItem taskItem);

	/**
	 * 根据点检项ID查询点检项子项信息
	 * 
	 * @param task 任务实体
	 */
	List<TaskSelect> queryTaskItemSelect(TaskSelect select);

	/**
	 * 根据ID更新点检项子项信息
	 * 
	 * @param task 任务实体
	 */
	void updateTaskItemSelect(List<TaskSelect> selectList);

	/**
	 * 根据设备ID查询维修单
	 * 
	 * @param equip 设备实体
	 */
	int equipmentNoRepaired(Equip equip);

}
